Các hạn chế và các phê phán Hệ_thống_X_Window

Cuốn "UNIX-HATERS Handbook" (Sổ tay những người ghét UNIX) đã dành toàn bộ chương "Thảm họa X Windows - The X-Windows Disaster" để nói về các vấn đề của X vào thời kỳ cuối thập niên 1980 đầu thập niên 1990. Cuốn "Tại sao X không phải là hệ thống cửa sổ lý tưởng - Why X Is Not Our Ideal Window System" (1990) của Gajewska, Manasse và McCormack đã miêu tả chi tiết những trục trặc trong giao thức kèm theo các đề nghị cải tiến.

Thiết bị phần cứng Video

Giới hạn hiệu năng làm việc của đồ họa máy tính hiện nay nằm chủ yếu trong các hàm xử lý đồ họa cao cấp. Các nhà cung cấp thường cài đặt các hàm xử lý đồ họa này trong các phần mềm điều vận độc quyền của mình (proprietary drivers), và họ thường viết cho hệ điều hành Windows trước (vì nó chiếm thị phần cao nhất). XFree86X.org Server đã thực hiện kỹ nghệ ngược (reverse engineering) đối với các bộ điều vận phần mềm (sofware drivers) cho nhiều card đồ họa cổ hơn. Tuy nhiên, khi thị trường đồ họa cung cấp các sản phẩm thuộc loại "đỉnh cao kỹ thuật" (state-of-the-art), nhiều nhà cung cấp coi các chi tiết lập trình là bí mật thương mại hay các phát minh có thể cấp bằng sáng chế mà họ không muốn tiết lộ.

Nhiều cài đặt hiện nay của X trực tiếp điều khiển phần cứng đồ họa. Một trình phục vụ hoạt động có lỗi có thể làm cho việc hiển thị trên màn hình lệch lạc đến mức độ không sử dụng được nữa, thậm chí nếu hệ điều hành ở bên dưới vẫn tiếp tục vận hành. Tình huống này có thể cần đến việc khởi động lại máy. Giao diện Hạ tầng cơ sở dựng ảnh trực tiếp (Direct Rendering Infrastructure) làm giảm nhẹ tình trạng này.

Các tính năng giao diện người dùng

X cố tình không chứa đặc tả về giao diện người dùng hay về phần lớn các giao tiếp giữa các trình ứng dụng. Điều này dẫn tới việc một số giao diện rất khác nhau và một số ứng dụng không phải lúc nào cũng hoạt động ổn thỏa với nhau. ICCCM (Inter-Client Communication Conventions Manual - Chỉ dẫn về quy ước giao tiếp giữa các trình khách), đặc tả về sự tương hoạt giữa các trình khách, có tiếng là khó cài đặt một cách đúng đắn. Những cố gắng về tiêu chuẩn sau này như Motif hoặc CDE cũng không giúp giải quyết được vấn đề. Điều này gây chán nản cho người dùng và các lập trình viên trong một thời gian dài . Hiện nay, các lập trình viên đồ họa thường giải quyết vấn đề nhất quán về diện mạo và cảm nhận (look and feel) cũng như về giao tiếp của trình ứng dụng bằng cách lập trình cho một môi trường mặt bàn cụ thể hoặc chỉ dùng một bộ công cụ khiển tố cụ thể. Với cách này, họ còn tránh được việc phải trực tiếp đối mặt với ICCCM.

Giao thức X không cung cấp tiện ích để xử lý âm thanh, nó để cho hệ điều hành tự cung cấp các hỗ trợ cho các phần cứng xử lý âm và chơi nhạc. Do nhu cầu sử dụng âm thanh của người dùng ngày càng tăng, điều đó dẫn đến nhiều hệ thống âm thanh con không tương thích. Trước đây, hầu hết các lập trình viên cố tình lờ đi các vấn đề về mạng mà chỉ dùng các API âm thanh đặc thù của hệ điều hành tại máy địa phương. Thế hệ đầu tiên của các hệ thống âm thanh có tính khách-phục vụ gồm có rplayNAS (Network Audio System). Những nỗ lực gần đây hơn đã tạo nên EsounD (GNOME) và ARts (KDE). Một hệ thống khác cũng đã bắt đầu được phát triển, đó là MAS (Media Application Server).

Cho đến gần đây, X chưa có một phương pháp tốt nào để giải quyết việc in ra các hiển thị trên màn hình. Nhiều trình khách của X cho in ra ở dạng PostScript hoàn toàn khác với những gì nó gửi tới trình phục vụ. Xprint xuất hiện lần đầu tiên trong X11R6.3. Phía trình khách hoạt động khá tốt, song nhiều cài đặt bên trình phục vụ thì không. Các phiên bản từ X11R6.8 trở đi đã hoạt động tốt và nó tiếp tục nhận được sự hỗ trợ bộ công cụ (toolkit support.).

Mạng

Hiện nay, không ai có thể tách một trình khách X hay một phiên làm việc X ra khỏi trình phục vụ và nối nó lại với một trình phục vụ khác, như người ta có thể làm với hệ thống mạng ảo VNC (Virtual Network Computing). Người ta đã bắt đầu làm việc để bổ sung tính năng này cho X.

Ở chế độ mặc định, giao thông mạng giữa một trình phục vụ X và một trình khách X ở xa không được mã hóa. Một kẻ tấn công với một phần mềm nghe trộm gói tin (packet sniffer) có thể chặn và đọc thông tin. Hầu hết người dùng giải quyết vấn đề này bằng cách nối X ngầm (tunneling) qua SSH; vì hầu hết các cài đặt của SSH đều hỗ trợ kết nối ngầm cho các trình ứng dụng X, mặc dù, ở chế độ mặc định, tính năng này bị vô hiệu hóa.

Thí dụ của việc kết nối ngầm một trình ứng dụng X11 thông qua SSH

Tính độc lập thiết bị và sự tách biệt giữa trình khách và trình phục vụ gây ra những phụ phí (overhead) về tài nguyên. Tính xuyên dụng mạng của X đòi hỏi các trình khách và trình phục vụ hoạt động biệt lập. Trước đây, ảnh hưởng này gây thiệt hại đáng kể về hiệu năng vận hành đối với các hệ thống vận hành biệt lập (standalone) khi so với những phiên bản cùng thời của Microsoft Windows hay Mac OS, đây là những hệ thống có các điều hành cửa sổ nhúng sâu bên trong hệ điều hành. Những người ủng hộ X đề xuất việc sử dụng từ 4 tới 8 MB RAM để đạt được hiệu năng hoạt động chấp nhận được; cho đến thời điểm giữa thập niên 1990, số lượng này là quá lớn và phí phạm khi so sánh với Windows và Mac OS. (Microsoft Windows phiên bản 3.0 - ra đời tháng 5 năm 1990 vẫn còn có thể chạy được trên những máy chỉ có 640KB dung lượng bộ nhớ, tuy nó đã có tính năng hỗ trợ phần mở rộng của bộ nhớ, và có thể dùng những địa chỉ bộ nhớ ngoài giới hạn 640KB. Năm 1984, máy tính Macintosh dùng giao diện đồ họa, được cài đặt chỉ có 512KB dung lượng bộ nhớ, 1/8 của 4MB, hay 1/16 của 8MB).

Các phiên bản hiện hành của Windows và Quartz của Mac OS X phân tách các hệ thống con nội bộ tương tự như sự phân chia trình khách/trình phục vụ trong X. Hiệu năng hoạt động và lượng tài nguyên sử dụng của chúng cũng tương đương với X khi chạy KDE hay GNOME. Phần lớn những phụ phí là do thời gian trễ trọn vòng (round-trip delay time) trên mạng giữa trình khách và trình phục vụ (do độ trễ mạng chứ không phải do chính giao thức). Các giải pháp tốt nhất cho vấn đề về hiệu suất hoạt động bao gồm việc chú trọng vào thiết kế của trình ứng dụng . Những quan niệm lầm tưởng thường thấy là những quan niệm cho rằng các tính năng mạng của X gây ra sự phức tạp quá mức cần thiết trong trường hợp người ta chỉ sử dụng trên một máy địa phương, và rằng năng lực liên kết mạng của X gây ảnh hưởng không mong muốn lên hiệu năng làm việc; các cài đặt hiện đại của X dùng socket địa phương và bộ nhớ chia sẻ, nên đòi hỏi rất ít phụ phí tài nguyên.

Tài liệu tham khảo

WikiPedia: Hệ_thống_X_Window http://www.cat.org.au/maffew/cat/xfree-dawes.html http://www.apple.com/macosx/features/x11/ http://ptlo.blogspot.com/2005/12/gnome-vs-kde-hist... http://cbbrowne.com/info/x11r6.4.html http://cbbrowne.com/info/xbloat.html http://www.computerworld.com/softwaretopics/softwa... http://cygwin.com/ml/cygwin-xfree/2003-10/msg00328... http://www.dwheeler.com/essays/gpl-compatible.html... http://h30097.www3.hp.com/docs/dev_doc/DOCUMENTATI... http://keithp.com/~keithp/talks/Xarchitecture/Talk...